import csv
from py2neo import Graph, Node, Relationship, NodeMatcher, NodeMatcher
import py2neo

# graph直接写账号密码会不安全
g = Graph('http://localhost:7474', user='neo4j', password='v52youma.')
# 创建config以及db.cfg用来存储信息
# 创建实体
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/专业.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("专业", id=item[0], name=item[1])
        g.merge(test_node_1, "专业", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/专业基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("专业基本信息", id=item[0], 名字=item[1], 简介=item[2], 发展历程=item[3], 培养目标=item[4], 培养规格=item[5],
                           课程体系=item[6], 教学条件=item[7], 发展前景=item[8])
        g.merge(test_node_1, "专业基本信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/课程.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("课程", id=item[0], name=item[1])
        g.merge(test_node_1, "课程", "id")

with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/课程基本信息.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("课程基本信息", id=item[0], name=item[1], 学时=item[2], 先修课程=item[3], 课程级别=item[4], 介绍=item[5], )
        g.merge(test_node_1, "课程基本信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/课程内容信息.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("课程内容信息", id=item[0], name=item[1], 教学大纲=item[2])
        g.merge(test_node_1, "课程内容信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/课程知识单元.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("课程知识单元", id=item[0], name=item[1])
        g.merge(test_node_1, "课程知识单元", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/课程知识单元基本信息.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("课程知识单元基本信息", id=item[0], name=item[1])
        g.merge(test_node_1, "课程知识单元基本信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/课程知识单元内容信息.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("课程知识单元内容信息", id=item[0], name=item[1])
        g.merge(test_node_1, "课程知识单元内容信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/课程知识点.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("课程知识点", id=item[0], name=item[1])
        g.merge(test_node_1, "课程知识点", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/课程知识点基本信息.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("课程知识点基本信息", id=item[0], name=item[1])
        g.merge(test_node_1, "课程知识点基本信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/课程知识点内容信息.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("课程知识点内容信息", id=item[0], name=item[1])
        g.merge(test_node_1, "课程知识点内容信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/知识单元.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("知识单元", id=item[0], name=item[1])
        g.merge(test_node_1, "知识单元", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/知识单元基本信息.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("知识单元基本信息", id=item[0], name=item[1], 缩写=item[2])
        g.merge(test_node_1, "知识单元基本信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/知识单元内容信息.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("知识单元内容信息", id=item[0], name=item[1])
        g.merge(test_node_1, "知识单元内容信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/知识点.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("知识点", id=item[0], name=item[1])
        g.merge(test_node_1, "知识点", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/知识点基本信息.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("知识点基本信息", id=item[0], name=item[1], 缩写=item[2], 掌握程度=item[3], 重要程度=item[4])
        g.merge(test_node_1, "知识点基本信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/知识点内容信息.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("知识点内容信息", id=item[0], name=item[1])
        g.merge(test_node_1, "知识点内容信息", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/实体节点/习题.csv', 'r', encoding='ANSI') as f:
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        test_node_1 = Node("习题", id=item[0], name=item[1], 答案=item[2])
        g.merge(test_node_1, "习题", "id")

    # 关系建立
matcher = NodeMatcher(g)

with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程-包含-课程基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前关系：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程', id=item[0]).first()
        endnode = matcher.match('课程基本信息', id=item[1]).first()
        relationships = Relationship(findnode, '课程基本信息', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程-包含-课程基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程基本信息', id=item[1]).first()
        endnode = matcher.match('课程', id=item[0]).first()
        relationships = Relationship(findnode, '基本信息所属课程', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程-包含-课程内容信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程', id=item[0]).first()
        endnode = matcher.match('课程内容信息', id=item[1]).first()
        relationships = Relationship(findnode, '课程内容信息', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程-包含-课程内容信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程内容信息', id=item[1]).first()
        endnode = matcher.match('课程', id=item[0]).first()
        relationships = Relationship(findnode, '内容信息所属课程', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程-前置-课程.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程', id=item[0]).first()
        endnode = matcher.match('课程', id=item[1]).first()
        relationships = Relationship(findnode, '前置课程', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程-前置-课程.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程', id=item[1]).first()
        endnode = matcher.match('课程', id=item[0]).first()
        relationships = Relationship(findnode, '后继课程', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程内容信息-包含-课程知识单元.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程内容信息', id=item[0]).first()
        endnode = matcher.match('课程知识单元', id=item[1]).first()
        relationships = Relationship(findnode, '课程所含课程知识单元', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程内容信息-包含-课程知识单元.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识单元', id=item[1]).first()
        endnode = matcher.match('课程内容信息', id=item[0]).first()
        relationships = Relationship(findnode, '课程知识单元所属课程', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程内容信息-包含-课程知识点.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程内容信息', id=item[0]).first()
        endnode = matcher.match('课程知识点', id=item[1]).first()
        relationships = Relationship(findnode, '课程所含课程知识点', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程内容信息-包含-课程知识点.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识点', id=item[1]).first()
        endnode = matcher.match('课程内容信息', id=item[0]).first()
        relationships = Relationship(findnode, '课程知识点所属课程', endnode)
        g.merge(relationships, "", "id")
# 11
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识单元-包含-课程知识单元基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识单元', id=item[0]).first()
        endnode = matcher.match('课程知识单元基本信息', id=item[1]).first()
        relationships = Relationship(findnode, '课程知识单元基本信息', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识单元-包含-课程知识单元基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识单元基本信息', id=item[1]).first()
        endnode = matcher.match('课程知识单元', id=item[0]).first()
        relationships = Relationship(findnode, '课程知识单元基本信息所属课程知识单元', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识单元-包含-课程知识单元内容信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识单元', id=item[0]).first()
        endnode = matcher.match('课程知识单元内容信息', id=item[1]).first()
        relationships = Relationship(findnode, '课程知识单元内容信息', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识单元-包含-课程知识单元内容信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识单元内容信息', id=item[1]).first()
        endnode = matcher.match('课程知识单元', id=item[0]).first()
        relationships = Relationship(findnode, '课程知识单元内容信息所属课程知识单元', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识单元-包含-课程知识点.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识单元', id=item[0]).first()
        endnode = matcher.match('课程知识点', id=item[1]).first()
        relationships = Relationship(findnode, '课程知识单元所含知识点', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识单元-包含-课程知识点.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识点', id=item[1]).first()
        endnode = matcher.match('课程知识单元', id=item[0]).first()
        relationships = Relationship(findnode, '课程知识点所属课程知识单元', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识单元内容信息-包含-知识单元.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识单元内容信息', id=item[0]).first()
        endnode = matcher.match('知识单元', id=item[1]).first()
        relationships = Relationship(findnode, '知识单元', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识单元内容信息-包含-知识单元.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识单元', id=item[1]).first()
        endnode = matcher.match('课程知识单元内容信息', id=item[0]).first()
        relationships = Relationship(findnode, '知识单元所属课程知识单元', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识点-包含-课程知识点基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识点', id=item[0]).first()
        endnode = matcher.match('课程知识点基本信息', id=item[1]).first()
        relationships = Relationship(findnode, '课程知识点基本信息', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识点-包含-课程知识点基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识点基本信息', id=item[1]).first()
        endnode = matcher.match('课程知识点', id=item[0]).first()
        relationships = Relationship(findnode, '课程知识点基本信息所属课程知识点', endnode)
        g.merge(relationships, "", "id")

# 21
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识点-包含-课程知识点内容信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识点', id=item[0]).first()
        endnode = matcher.match('课程知识点内容信息', id=item[1]).first()
        relationships = Relationship(findnode, '课程知识点内容信息', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识点-包含-课程知识点内容信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识点内容信息', id=item[1]).first()
        endnode = matcher.match('课程知识点', id=item[0]).first()
        relationships = Relationship(findnode, '属于', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识点内容信息-包含-知识点.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程知识点内容信息', id=item[0]).first()
        endnode = matcher.match('知识点', id=item[1]).first()
        relationships = Relationship(findnode, '知识点', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/课程知识点内容信息-包含-知识点.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识点', id=item[1]).first()
        endnode = matcher.match('课程知识点内容信息', id=item[0]).first()
        relationships = Relationship(findnode, '知识点所属课程知识点', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识单元-包含-知识单元基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识单元', id=item[0]).first()
        endnode = matcher.match('知识单元基本信息', id=item[1]).first()
        relationships = Relationship(findnode, '知识单元基本信息', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识单元-包含-知识单元基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识单元基本信息', id=item[1]).first()
        endnode = matcher.match('知识单元', id=item[0]).first()
        relationships = Relationship(findnode, '知识单元基本信息所属知识单元', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识单元-包含-知识单元内容信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识单元', id=item[0]).first()
        endnode = matcher.match('知识单元内容信息', id=item[1]).first()
        relationships = Relationship(findnode, '知识单元内容信息', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识单元-包含-知识单元内容信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识单元内容信息', id=item[1]).first()
        endnode = matcher.match('知识单元', id=item[0]).first()
        relationships = Relationship(findnode, '知识单元内容信息所属知识单元', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识单元-包含-知识点.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识单元', id=item[0]).first()
        endnode = matcher.match('知识点', id=item[1]).first()
        relationships = Relationship(findnode, '知识点', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识单元-包含-知识点.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识点', id=item[1]).first()
        endnode = matcher.match('知识单元', id=item[0]).first()
        relationships = Relationship(findnode, '知识点所属知识单元', endnode)
        g.merge(relationships, "", "id")
    # 31
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识点-包含-知识点基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识点', id=item[0]).first()
        endnode = matcher.match('知识点基本信息', id=item[1]).first()
        relationships = Relationship(findnode, '知识点基本信息', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识点-包含-知识点基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识点基本信息', id=item[1]).first()
        endnode = matcher.match('知识点', id=item[0]).first()
        relationships = Relationship(findnode, '属于', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识点-包含-知识点内容信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识点', id=item[0]).first()
        endnode = matcher.match('知识点内容信息', id=item[1]).first()
        relationships = Relationship(findnode, '知识点内容信息', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识点-包含-知识点内容信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识点内容信息', id=item[1]).first()
        endnode = matcher.match('知识点', id=item[0]).first()
        relationships = Relationship(findnode, '属于', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/专业-包含-课程.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('专业', id=item[0]).first()
        endnode = matcher.match('课程', id=item[1]).first()
        relationships = Relationship(findnode, '所含课程', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/专业-包含-课程.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('课程', id=item[1]).first()
        endnode = matcher.match('专业', id=item[0]).first()
        relationships = Relationship(findnode, '所属专业', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/专业-包含-专业基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('专业', id=item[0]).first()
        endnode = matcher.match('专业基本信息', id=item[1]).first()
        relationships = Relationship(findnode, '包含', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/专业-包含-专业基本信息.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('专业基本信息', id=item[1]).first()
        endnode = matcher.match('专业', id=item[0]).first()
        relationships = Relationship(findnode, '属于', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识单元-包含-习题.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识单元', id=item[0]).first()
        endnode = matcher.match('习题', id=item[1]).first()
        relationships = Relationship(findnode, '所含习题', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识单元-包含-习题.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('习题', id=item[1]).first()
        endnode = matcher.match('知识单元', id=item[0]).first()
        relationships = Relationship(findnode, '考察知识单元', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识点-包含-习题.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('知识点', id=item[0]).first()
        endnode = matcher.match('习题', id=item[1]).first()
        relationships = Relationship(findnode, '所含习题', endnode)
        g.merge(relationships, "", "id")
with open('C:/Users/刘刘刘/Desktop/课程知识图谱数据/关系/知识点-包含-习题.csv', 'r', encoding='ANSI') as f:
    # 数据集除了第一行代表属性外，第一列为实体1，第二列为实体2，第三列是两者英文关系，第四列为两者中文关系
    reader = csv.reader(f)
    for item in reader:
        # 第一行的标签不是咱们需要的内容，line_num表示文件的第几行
        if reader.line_num == 1:
            continue
        print("当前行数：", reader.line_num, "当前内容", item)
        findnode = matcher.match('习题', id=item[1]).first()
        endnode = matcher.match('知识点', id=item[0]).first()
        relationships = Relationship(findnode, '考察知识点', endnode)
        g.merge(relationships, "", "id")